package com.boot.project.core.util;

import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @description: 自定义工具类
 * @author: tsing
 * @create: 2020-08-13 10:59
 */
@Slf4j
public class CustomerUtils {
    /**
     * 将uri转化为权限代码的前缀
     * @param uri 请求路径
     * @return
     */
    public static String getPermissionPrefix(String uri) {
        Integer symbol2 = StrUtil.ordinalIndexOf(uri, "/", 2);
        Integer symbol3 = StrUtil.ordinalIndexOf(uri, "/", 3);
        if (symbol2 == -1) {
            log.info("--------------->类上的RequestMapping必须要有两层！");
            // -1 表示加密失败
            return "-1";
        }
        String prefix1 = uri.substring(1, symbol2);
        String prefix2 = symbol3 == -1 ? uri.substring(symbol2 + 1) : uri.substring(symbol2 + 1, symbol3);
        return prefix1 + ":" + prefix2 + ":";
    }

    /**
     * 根据code生成指定长度的字符串，如果code的长度不足，那么前面用0来填充
     *
     * @author tsing
     * @date 2020年6月30日
     * @param code
     * @param len
     * @return
     */
    public static String codeAddOne(String code, int len) {
        Integer intHao = Integer.parseInt(code);
        String strHao = intHao.toString();
        while (strHao.length() < len) {
            strHao = "0" + strHao;
        }
        return strHao;
    }

    /**
     * 在wholeStr中查找第num次出现的searchStr的位置
     *
     * @author tsing
     * @date 2020年7月9日
     * @param wholeStr
     * @param searchStr
     * @param num
     * @return
     */
    public static int getStringByNum(String wholeStr, String searchStr, int num) {
        Pattern pattern = Pattern.compile(searchStr);
        Matcher findMatcher = pattern.matcher(wholeStr);
        int number = 0;
        while (findMatcher.find()) {
            number++;
            if (number == num) {
                break;
            }
        }
        return findMatcher.start();
    }
}


